<?php

/**
 * Produto
 *  
 * @author Tiago Santos
 * @version 
 */

class Produto {
	private $table;
	
	public function getDbTable(){
		if($this->table === NULL){
			require_once APPLICATION_PATH . '/models/DbTable/Produto.php';
			$this->table = new ProdutoDbTable();
		}
		return $this->table;
	}
	
	public function getAll(){
		$dt = $this->getDbTable();
		$select = $dt->select()->order('ds_nome');
		$rows = $dt->fetchAll($select)->toArray();
		return $rows;
	}
	
	public function getByCategoria($codigo){
		$dt = $this->getDbTable();
		$select = $dt->select()->where('cd_categoria = ' . $codigo);
		$rows = $dt->fetchAll($select);
		return $rows->toArray();
	}
	
	public function getByRandon(){
		$dt = $this->getDbTable();
		$select = $dt->select()
			->setIntegrityCheck(false)
			->from(DB_SCHEMA.'.produto')
			->join(DB_SCHEMA.'.categoria','categoria.cd_categoria=produto.cd_categoria')
			->order('cd_produto DESC')
			->limit(10);
		$rows = $dt->fetchAll($select);
		return $rows->toArray();
	}
	
	public function getSelect(){
		$regs = $this->getAll();
		$arr = array();
		foreach($regs as $r){
			$arr[$r['cd_produto']] = $r['ds_nome'];
		}
		return $arr;
	}
	
	public function getById($codigo){
		$dt = $this->getDbTable();
		$select = $dt->select()->where('cd_produto = ' . $codigo);
		$rows = $dt->fetchAll($select);
		$rows = $rows->toArray();
		return $rows[0];
	}
	
	public function search($q){
		$db = Zend_Db_Table_Abstract::getDefaultAdapter();
		$sql = "SELECT produto.*, categoria.* 
				FROM ".DB_SCHEMA.".categoria 
				JOIN ".DB_SCHEMA.".produto USING (cd_categoria)
				WHERE ";
		$qs = split(' ',$q);
		foreach($qs as $k => $s){
			if($k != 0)
				$sql .= " OR ";
			$sql .= "produto.ds_nome ilike '%$s%' OR ";
			$sql .= "produto.tx_descricao ilike '%$s%' OR ";
			$sql .= "categoria.ds_descricao ilike '%$s%' ";
		}
		$sql .= "ORDER BY produto.ds_nome;";
		$r = $db->query($sql)->fetchAll();
		return $r;
	}
	
	public function save($array){
		if(trim($array['vl_promocao'])==''){
			unset($array['vl_promocao']);
		}
		if(trim($array['cd_produto'])!='')
			$this->update($array,"cd_produto = " . $array['cd_produto']);
		else{
			unset($array['cd_produto']);
			$this->getDbTable()->insert($array);
		}
	}
	
	public function update($array,$where){
		$this->getDbTable()->update($array,$where);
	}
	
	public function delete($where){
		$this->getDbTable()->delete($where);
	}
}
